package com.thank.concurrency.samples.singleton;

import com.thank.concurrency.annoations.NotRecommend;
import com.thank.concurrency.annoations.ThreadSafe;

/**
 * 懒汉式: 通过加synchronized改造成线程安全的
 * 单例实例在第一次使用时进行创建
 */
@ThreadSafe
@NotRecommend // 因为性能不好
public class SingletonExample3 {

    // 私有的构造方法
    private SingletonExample3() {}

    // 单例对象
    private static SingletonExample3 instance = null;

    // 静态的工厂方法
    public static synchronized SingletonExample3 getInstance() {
        if (null == instance) {
            return new SingletonExample3();
        }

        return instance;
    }

}
